'\" te
.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright (c) 2014 Joyent, Inc.  All rights reserved.
.\" Copyright 2014 Garrett D'Amore <garrett@damore.org>
.\"
.TH USELOCALE 3C "Jun 24, 2014"

.SH NAME
uselocale \- get and set the locale for an individual thread
.SH SYNOPSIS
.LP
.nf
#include <locale.h>

\fBlocale_t\fR \fBuselocale\fR(\fBlocale_t\fR \fIloc\fR);
.fi
.SH DESCRIPTION
.LP
The
.B uselocale()
function is used to obtain and set the current locale for a thread. When
a thread is created, it uses the global locale as specified by calls to
.BR setlocale() .
.LP
If
.BR (locale_t) 0
is supplied for
.IR loc ,
then no change is made to the thread's locale setting.  This can be used
to query the thread's locale without making any change.
.LP
If
.B LC_GLOBAL_LOCALE
is supplied for
.IR loc ,
then the thread will use the global locale, undoing the effect of any
prior call to establish a thread-specific locale.
.LP
Otherwise the thread will use the supplied
.I loc
locale object as a thread-specific locale. Changes to the global
locale, or to the locale of any other thread, will not affect this thread.
.LP
Locale objects for use with
.B uselocale()
can be created with the functions
.BR duplocale (3C)
and
.BR newlocale (3C).
.SH RETURN VALUES
Upon successful completion, the
.B uselocale()
function always returns the previous locale that was set. If no locale
was previously set, the global locale,
.BR LC_GLOBAL_LOCALE ,
is returned. On failure, the
.B uselocale()
function returns
.BR (locale_t) 0,
and sets
.B errno
to indicate the error.
.SH ERRORS
.TP
.B EINVAL
An invalid locale was encountered or an internal error occurred that
caused the system to be unable to update the locale.
.SH ATTRIBUTES
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Standard
_
MT-Level	MT-Safe
.TE

.SH SEE ALSO
.BR locale (1),
.BR duplocale (3C),
.BR newlocale (3C),
.BR setlocale (3C),
.BR locale (7)
